﻿
using System;
using System.Data.SqlClient;
using System.Globalization;
using System.Runtime.Serialization;
using ProtoBuf;/*https://github.com/ServiceStack/ServiceStack/tree/master/lib*/
using ServiceStack.Text;/*https://github.com/ServiceStack/ServiceStack.Text*/
using V82;
using V82.ОбщиеОбъекты;
using V82.СправочникиСсылка;
using V82.СправочникиОбъект;
using V82.ДокументыСсылка;
using V82.Перечисления;//Ссылка;
namespace V82.СправочникиОбъект
{
	///<summary>
	///(Общ)
	///</summary>
	[ProtoContract]
	[DataContract]
	public partial class ФизическиеЛица:СправочникОбъект
	{
		public bool _ЭтоНовый;
		public bool ЭтоНовый()
		{
			return _ЭтоНовый;
		}
		[DataMember]
		[ProtoMember(1)]
		public Guid Ссылка {get;set;}
		[DataMember]
		[ProtoMember(2)]
		public long Версия {get;set;}
		[DataMember]
		[ProtoMember(3)]
		public string ВерсияДанных {get;set;}
		/*static хэш сумма состава и порядка реквизитов*/
		/*версия класса восстановленного из пакета*/
		[DataMember]
		[ProtoMember(4)]
		public bool ПометкаУдаления {get;set;}
		[DataMember]
		[ProtoMember(5)]
		public bool Предопределенный {get;set;}
		[DataMember]
		[ProtoMember(6)]
		public V82.СправочникиСсылка.ФизическиеЛица Родитель {get;set;}
		[DataMember]
		[ProtoMember(7)]
		public bool ЭтоГруппа {get;set;}
		[DataMember]
		[ProtoMember(8)]
		public string/*10*/ Код {get;set;}
		[DataMember]
		[ProtoMember(9)]
		public string/*50*/ Наименование {get;set;}
		///<summary>
		///(Общ)
		///</summary>
		[DataMember]
		[ProtoMember(10)]
		public DateTime ДатаРождения {get;set;}//Дата рождения
		///<summary>
		///(Регл)
		///</summary>
		[DataMember]
		[ProtoMember(11)]
		public string/*(12)*/ ИНН {get;set;}
		///<summary>
		///(Регл)
		///</summary>
		[DataMember]
		[ProtoMember(12)]
		public string/*(4)*/ КодИМНС {get;set;}//Код ИФНС
		///<summary>
		///(Общ)
		///</summary>
		[DataMember]
		[ProtoMember(13)]
		public string/*(0)*/ Комментарий {get;set;}
		///<summary>
		///(Регл)
		///</summary>
		[DataMember]
		[ProtoMember(14)]
		public string/*(14)*/ СтраховойНомерПФР {get;set;}//Страховой номер ПФР
		///<summary>
		///(Общ)
		///</summary>
		[DataMember]
		[ProtoMember(15)]
		public V82.Перечисления/*Ссылка*/.ПолФизическихЛиц Пол {get;set;}
		///<summary>
		///(Общ)
		///</summary>
		[DataMember]
		[ProtoMember(16)]
		public string/*(240)*/ МестоРождения {get;set;}//Место рождения
		///<summary>
		///(Общ)
		///</summary>
		[DataMember]
		[ProtoMember(17)]
		public V82.СправочникиСсылка.ХранилищеДополнительнойИнформации ОсновноеИзображение {get;set;}//Основное изображение
		///<summary>
		///(Регл)
		///</summary>
		[DataMember]
		[ProtoMember(18)]
		public string/*(11)*/ МестоРожденияКодПоОКАТО {get;set;}//Место рождения - код по ОКАТО
		[DataMember]
		[ProtoMember(19)]
		public V82.СправочникиСсылка.ГруппыДоступаФизическихЛиц ГруппаДоступаФизическогоЛица {get;set;}//Группа доступа физического лица
		[DataMember]
		[ProtoMember(20)]
		public V82.Перечисления/*Ссылка*/.ВидыЛьготПриНачисленииБольничных ЛьготаПриНачисленииПособий {get;set;}//Льгота при начислении пособий
		[DataMember]
		[ProtoMember(21)]
		public bool ИмеетНаучныеТруды {get;set;}//Имеет научные труды
		[DataMember]
		[ProtoMember(22)]
		public bool ИмеетИзобретения {get;set;}//Имеет изобретения
		public void Записать()
		{
			//Установка блокировки элемента на горизантально масштабированный кластер.
			//Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки.
			//Выделение сервиса для блокировки элемента и генерации кода
			//Выполнение операций контроля без обращений к sql-серверу.
			//Контроль конфликта блокировок.
			//Контроль загрузки булкинсертом гетерогенной коллекции.
			//Контроль уникальности кода для справочников.
			//Контроль уникальности номера для документов, в границах префикса.
			//Контроль владельца, он не может быть группой.
			//Контроль владельца он должен быть задан.
			//Контроль родителя он должен быть группой.
			//Контроль количества уровней, должен соотвествовать метаданным.
			//Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника.
			//Контроль уникальности ссылки
			//Контроль зацикливания
			//Опционально контроль битых ссылок.
			//Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента.
			using (var Подключение = new SqlConnection(СтрокаСоединения))
			{
				Подключение.Open();
				using (var Команда = Подключение.CreateCommand())
				{
					if(_ЭтоНовый)
					{
						Команда.CommandText = @"
						Insert Into _Reference190(
						_IDRRef
						/*,_Version*/
						,_Marked
						,_IsMetadata
						,_ParentIDRRef
						,_Folder
						,_Code
						,_Description
						,_Fld2197
						,_Fld2198
						,_Fld2199
						,_Fld2200
						,_Fld2201
						,_Fld2202RRef
						,_Fld2203
						,_Fld2204RRef
						,_Fld2205
						,_Fld21297RRef
						,_Fld26650RRef
						,_Fld26651
						,_Fld26652)
						Values(
						@Ссылка
						/*,@Версия*/
						,@ПометкаУдаления
						,@Предопределенный
						,@Родитель
						,@ЭтоГруппа
						,@Код
						,@Наименование
						,@ДатаРождения
						,@ИНН
						,@КодИМНС
						,@Комментарий
						,@СтраховойНомерПФР
						,@Пол
						,@МестоРождения
						,@ОсновноеИзображение
						,@МестоРожденияКодПоОКАТО
						,@ГруппаДоступаФизическогоЛица
						,@ЛьготаПриНачисленииПособий
						,@ИмеетНаучныеТруды
						,@ИмеетИзобретения)";
					}
					else
					{
						Команда.CommandText = @"
						Update _Reference190
						Set
						/*_IDRRef	= @Ссылка*/
						/*,_Version	= @Версия*/
						_Marked	= @ПометкаУдаления
						,_IsMetadata	= @Предопределенный
						,_ParentIDRRef	= @Родитель
						,_Folder	= @ЭтоГруппа
						,_Code	= @Код
						,_Description	= @Наименование
						,_Fld2197	= @ДатаРождения
						,_Fld2198	= @ИНН
						,_Fld2199	= @КодИМНС
						,_Fld2200	= @Комментарий
						,_Fld2201	= @СтраховойНомерПФР
						,_Fld2202RRef	= @Пол
						,_Fld2203	= @МестоРождения
						,_Fld2204RRef	= @ОсновноеИзображение
						,_Fld2205	= @МестоРожденияКодПоОКАТО
						,_Fld21297RRef	= @ГруппаДоступаФизическогоЛица
						,_Fld26650RRef	= @ЛьготаПриНачисленииПособий
						,_Fld26651	= @ИмеетНаучныеТруды
						,_Fld26652	= @ИмеетИзобретения
						Where _IDRRef = @Ссылка";
					}
					Команда.Parameters.AddWithValue("Ссылка", Ссылка.ToByteArray());
					/*Команда.Parameters.AddWithValue("Версия", Версия);*/
					Команда.Parameters.AddWithValue("ПометкаУдаления", ПометкаУдаления);
					Команда.Parameters.AddWithValue("Предопределенный", Предопределенный);
					Команда.Parameters.AddWithValue("Родитель", Родитель);
					Команда.Parameters.AddWithValue("ЭтоГруппа", ЭтоГруппа?new byte[]{0}:new byte[]{1});
					Команда.Parameters.AddWithValue("Код", Код);
					Команда.Parameters.AddWithValue("Наименование", Наименование);
					Команда.Parameters.AddWithValue("ДатаРождения", ДатаРождения);
					Команда.Parameters.AddWithValue("ИНН", ИНН);
					Команда.Parameters.AddWithValue("КодИМНС", КодИМНС);
					Команда.Parameters.AddWithValue("Комментарий", Комментарий);
					Команда.Parameters.AddWithValue("СтраховойНомерПФР", СтраховойНомерПФР);
					Команда.Parameters.AddWithValue("Пол", Пол.Ключ());
					Команда.Parameters.AddWithValue("МестоРождения", МестоРождения);
					Команда.Parameters.AddWithValue("ОсновноеИзображение", ОсновноеИзображение.Ссылка);
					Команда.Parameters.AddWithValue("МестоРожденияКодПоОКАТО", МестоРожденияКодПоОКАТО);
					Команда.Parameters.AddWithValue("ГруппаДоступаФизическогоЛица", ГруппаДоступаФизическогоЛица.Ссылка);
					Команда.Parameters.AddWithValue("ЛьготаПриНачисленииПособий", ЛьготаПриНачисленииПособий.Ключ());
					Команда.Parameters.AddWithValue("ИмеетНаучныеТруды", ИмеетНаучныеТруды);
					Команда.Parameters.AddWithValue("ИмеетИзобретения", ИмеетИзобретения);
					Команда.ExecuteNonQuery();
				}
			}
		}
		public void Удалить()
		{
			using (var Подключение = new SqlConnection(СтрокаСоединения))
			{
				Подключение.Open();
				using (var Команда = Подключение.CreateCommand())
				{
					Команда.CommandText = @"Delete _Reference190
					Where _IDRRef=@Ссылка";
					Команда.Parameters.AddWithValue("Ссылка", Ссылка.ToByteArray());
					Команда.ExecuteNonQuery();
				}
			}
		}
		/*МодульОбъекта*/
		////////////////////////////////////////////////////////////////////////////////
		// ПЕРЕМЕННЫЕ МОДУЛЯ

		public object Печать(/*ТабДокумент = Неопределено, ДатаАктуальности = Неопределено*/)
		{
			//СтруктураДанных = Новый Структура;
			//СтруктураДанныхОрганизации = Новый Структура;
			/*//Если ТабДокумент = Неопределено Тогда
*/
			//Подробно = Истина;
			/*//Иначе
*/
			/*//	Подробно = Ложь
*/
			/*//КонецЕсли;
*/
			//Запрос = Новый Запрос;
			/*// Установим параметры запроса.
*/
			//Запрос.УстановитьПараметр("ФизЛицо" ,	Ссылка);
			if(true/*ДатаАктуальности = Неопределено*/)
			{
				//Запрос.УстановитьПараметр("ДатаАктуальности" ,	КонецДня(ОбщегоНазначения.ПолучитьРабочуюДату()));
			}
			//Запрос.УстановитьПараметр("Изображение" ,Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение);
			//Запрос.УстановитьПараметр("ПустаяСтрока" ,"");
			if(true/*Подробно*/)
			{
				/*Запрос.Текст = 
		"ВЫБРАТЬ
		|	ФизическиеЛица.Наименование,
		|	ФизическиеЛица.ДатаРождения,
		|	ФизическиеЛица.МестоРождения,
		|	ФизическиеЛица.ИНН,
		|	ФизическиеЛица.Код,
		|	ФизическиеЛица.КодИМНС,
		|	ФизическиеЛица.Пол,
		|	ФизическиеЛица.СтраховойНомерПФР,
		|	ФизическиеЛица.ОсновноеИзображение.Хранилище КАК Данные,
		|	ФизическиеЛица.ОсновноеИзображение.Наименование КАК ОписаниеИзображения,
		|	ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид.Представление КАК ДокументВид,
		|	ПаспортныеДанныеФизЛицСрезПоследних.ДокументДатаВыдачи,
		|	ВЫРАЗИТЬ(ПаспортныеДанныеФизЛицСрезПоследних.ДокументКемВыдан КАК СТРОКА(300)) КАК ДокументКемВыдан,
		|	ПаспортныеДанныеФизЛицСрезПоследних.ДокументКодПодразделения,
		|	ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер,
		|	ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия,
		|	ФИОФизЛицСрезПоследних.Фамилия,
		|	ФИОФизЛицСрезПоследних.Имя,
		|	ФИОФизЛицСрезПоследних.Отчество
		|ИЗ
		|	Справочник.ФизическиеЛица КАК ФизическиеЛица
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(, ФизЛицо = &ФизЛицо) КАК ФИОФизЛицСрезПоследних
		|		ПО ФИОФизЛицСрезПоследних.ФизЛицо = ФизическиеЛица.Ссылка
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних(, ФизЛицо = &ФизЛицо) КАК ПаспортныеДанныеФизЛицСрезПоследних
		|		ПО ФизическиеЛица.Ссылка = ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо
		|
		|ГДЕ
		|	ФизическиеЛица.Ссылка = &ФизЛицо";*/
				//Результат = Запрос.Выполнить();
				//ВыборкаДляПроверок = Результат.Выбрать();
				//ВыборкаДляПроверок.Следующий();
				//СтруктураДанных.Вставить("ФизическиеЛица", Результат.Выбрать());
				if(true/*ВыборкаДляПроверок.ДокументВид <> Null*/)
				{
					//СтруктураДанных.Вставить("ПаспортныеДанныеФизЛиц", Результат.Выбрать());
				}
				/*Запрос.Текст = 
		"ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	КонтактнаяИнформация.Тип КАК Тип,
		|	ВЫБОР КОГДА КонтактнаяИнформация.Вид ССЫЛКА Справочник.ВидыКонтактнойИнформации ТОГДА
		|		КонтактнаяИнформация.Вид.Представление
		|	ИНАЧЕ
		|		КонтактнаяИнформация.Вид
		|	КОНЕЦ КАК ВидКИ,
		|	КонтактнаяИнформация.Представление КАК ПредставлениеКИ
		|ИЗ
		|	РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
		|ГДЕ
		|	КонтактнаяИнформация.Объект = &ФизЛицо
		|УПОРЯДОЧИТЬ ПО
		|	Тип
		|АВТОУПОРЯДОЧИВАНИЕ";*/
				//СтруктураДанных.Вставить("КонтактнаяИнформация", Запрос.Выполнить().Выбрать());
				/*// разделы информации о физлице из табличных частей справочника
*/
				//ФизическиеЛицаПереопределяемый.ДополнитьСтруктуруДанныхЗапросом(Запрос, СтруктураДанных);
				/*Запрос.Текст =
		"ВЫБРАТЬ
		|	ФизическиеЛицаНаграды.Награда,
		|	ФизическиеЛицаНаграды.НомерПриказа,
		|	ФизическиеЛицаНаграды.ДатаПриказа,
		|	ФизическиеЛицаНаграды.ЧейПриказ
		|ИЗ
		|	Справочник.ФизическиеЛица.Награды КАК ФизическиеЛицаНаграды
		|ГДЕ
		|	ФизическиеЛицаНаграды.Ссылка = &ФизЛицо
		|
		|УПОРЯДОЧИТЬ ПО
		|	ФизическиеЛицаНаграды.НомерСтроки";*/
				//СтруктураДанных.Вставить("ФизическиеЛица_Награды", Запрос.Выполнить().Выбрать());
				/*Запрос.Текст = 
		"ВЫБРАТЬ
		|	ЗначенияСвойствОбъектов.Значение,
		|	ЗначенияСвойствОбъектов.Свойство
		|ИЗ
		|	РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
		|
		|ГДЕ
		|	ЗначенияСвойствОбъектов.Объект = &ФизЛицо";*/
				//СтруктураДанных.Вставить("ДополнительныеДанные", Запрос.Выполнить().Выбрать());
			}
			if(true/*НастройкаПравДоступаПереопределяемый.ДоступнаРольМенеджераПоНабору()*/)
			{
				//Запрос.Текст = ФизическиеЛицаПереопределяемый.ТекстЗапросаРезультатыАнкетирования();
				//СтруктураДанных.Вставить("Опросы", Запрос.Выполнить().Выбрать());
			}
			//ФизическиеЛицаПереопределяемый.ДополнитьДанныеКадровогоУчета(Запрос, СтруктураДанных);
			if(true/*НастройкаПравДоступаПереопределяемый.ДоступнаРольКадровикаРегл()*/)
			{
				/*Запрос.Текст = 
		"ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	ВЫБОР
		|		КОГДА РаботникиОрганизацииСрезПоследних.ПериодЗавершения <= &ДатаАктуальности
		|				И РаботникиОрганизацииСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
		|			ТОГДА РаботникиОрганизацииСрезПоследних.ЗанимаемыхСтавокЗавершения
		|		ИНАЧЕ РаботникиОрганизацииСрезПоследних.ЗанимаемыхСтавок
		|	КОНЕЦ КАК ЗанимаемыхСтавок,
		|	ВЫБОР
		|		КОГДА РаботникиОрганизацииСрезПоследних.ПериодЗавершения <= &ДатаАктуальности
		|				И РаботникиОрганизацииСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
		|			ТОГДА РаботникиОрганизацииСрезПоследних.ДолжностьЗавершения.Представление
		|		ИНАЧЕ РаботникиОрганизацииСрезПоследних.Должность.Представление
		|	КОНЕЦ КАК Должность,
		|	ВЫБОР
		|		КОГДА РаботникиОрганизацииСрезПоследних.ПериодЗавершения <= &ДатаАктуальности
		|				И РаботникиОрганизацииСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
		|			ТОГДА РаботникиОрганизацииСрезПоследних.ПодразделениеОрганизацииЗавершения.Представление
		|		ИНАЧЕ РаботникиОрганизацииСрезПоследних.ПодразделениеОрганизации.Представление
		|	КОНЕЦ КАК Подразделение,
		|	РаботникиОрганизацииСрезПоследних.Организация.Представление КАК Организация,
		|	РаботникиОрганизацииСрезПоследних.Организация КАК ОрганизацияСсылка,
		|	ВЫБОР
		|		КОГДА РаботникиОрганизацииСрезПоследних.ПериодЗавершения <= &ДатаАктуальности
		|				И РаботникиОрганизацииСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
		|			ТОГДА ВЫБОР
		|					КОГДА РаботникиОрганизацииСрезПоследних.ПричинаИзмененияСостоянияЗавершения = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
		|						ТОГДА ""Не работает (уволен)""
		|					ИНАЧЕ ""Работает""
		|				КОНЕЦ
		|		ИНАЧЕ ВЫБОР
		|				КОГДА РаботникиОрганизацииСрезПоследних.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
		|					ТОГДА ""Не работает (уволен)""
		|				ИНАЧЕ ""Работает""
		|			КОНЕЦ
		|	КОНЕЦ КАК Состояние,
		|	РаботникиОрганизацииСрезПоследних.Сотрудник.Код КАК ТабельныйНомер
		|ИЗ
		|	РегистрСведений.РаботникиОрганизаций.СрезПоследних(
		|			&ДатаАктуальности,
		|			Сотрудник.ФизЛицо = &ФизЛицо
		|				И (НЕ Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство))) КАК РаботникиОрганизацииСрезПоследних
		|
		|УПОРЯДОЧИТЬ ПО
		|	Организация,
		|	РаботникиОрганизацииСрезПоследних.Период УБЫВ,
		|	РаботникиОрганизацииСрезПоследних.ПричинаИзмененияСостояния.Порядок";*/
				//РезультатПоОрганизациям = Запрос.Выполнить();
				if(true/*Не РезультатПоОрганизациям.Пустой()*/)
				{
					//СтруктураДанных.Вставить("Организация", РезультатПоОрганизациям.Выбрать());
					/*Запрос.Текст = 
			"ВЫБРАТЬ
			|	ПриемНаРаботуВОрганизациюРаботники.Ссылка КАК Документ,
			|	ПриемНаРаботуВОрганизациюРаботники.Ссылка.Представление,
			|	ПриемНаРаботуВОрганизациюРаботники.ПодразделениеОрганизации.Владелец КАК Организация,
			|	ПриемНаРаботуВОрганизациюРаботники.Ссылка.Дата КАК Дата,
			|	ПриемНаРаботуВОрганизациюРаботники.ДатаПриема КАК ДатаС,
			|	ДАТАВРЕМЯ(1, 1, 1) КАК ДатаПо,
			|	ПриемНаРаботуВОрганизациюРаботники.ПодразделениеОрганизации.Представление КАК Подразделение,
			|	ПриемНаРаботуВОрганизациюРаботники.Должность.Представление КАК Должность,
			|	ПриемНаРаботуВОрганизациюРаботники.ЗанимаемыхСтавок,
			|	ПриемНаРаботуВОрганизациюРаботники.ИспытательныйСрок КАК Примечание
			|ИЗ
			|	Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботники
			|ГДЕ
			|	ПриемНаРаботуВОрганизациюРаботники.Сотрудник.ФизЛицо = &ФизЛицо
			|	И ПриемНаРаботуВОрганизациюРаботники.Ссылка.Проведен
			|
			|ОБЪЕДИНИТЬ ВСЕ
			|
			|ВЫБРАТЬ
			|	КадровоеПеремещениеОрганизацииРаботники.Ссылка,
			|	КадровоеПеремещениеОрганизацииРаботники.Ссылка.Представление,
			|	КадровоеПеремещениеОрганизацииРаботники.ПодразделениеОрганизации.Владелец,
			|	КадровоеПеремещениеОрганизацииРаботники.Ссылка.Дата,
			|	КадровоеПеремещениеОрганизацииРаботники.ДатаНачала,
			|	ВЫБОР
			|		КОГДА НЕ КадровоеПеремещениеОрганизацииРаботники.НапомнитьПоЗавершении
			|			ТОГДА КадровоеПеремещениеОрганизацииРаботники.ДатаОкончания
			|		ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
			|	КОНЕЦ,
			|	КадровоеПеремещениеОрганизацииРаботники.ПодразделениеОрганизации.Представление,
			|	КадровоеПеремещениеОрганизацииРаботники.Должность.Представление,
			|	КадровоеПеремещениеОрганизацииРаботники.ЗанимаемыхСтавок,
			|	NULL
			|ИЗ
			|	Документ.КадровоеПеремещениеОрганизаций.РаботникиОрганизации КАК КадровоеПеремещениеОрганизацииРаботники
			|ГДЕ
			|	КадровоеПеремещениеОрганизацииРаботники.Сотрудник.ФизЛицо = &ФизЛицо
			|	И КадровоеПеремещениеОрганизацииРаботники.Ссылка.Проведен 
			|
			|ОБЪЕДИНИТЬ ВСЕ
			|
			|ВЫБРАТЬ
			|	УвольнениеИзОрганизацииРаботники.Ссылка,
			|	УвольнениеИзОрганизацииРаботники.Ссылка.Представление,
			|	УвольнениеИзОрганизацииРаботники.Ссылка.Организация,
			|	УвольнениеИзОрганизацииРаботники.Ссылка.Дата,
			|	УвольнениеИзОрганизацииРаботники.ДатаУвольнения,
			|	NULL,
			|	NULL,
			|	NULL,
			|	NULL,
			|	УвольнениеИзОрганизацииРаботники.СтатьяТКРФ.Наименование
			|ИЗ
			|	Документ.УвольнениеИзОрганизаций.РаботникиОрганизации КАК УвольнениеИзОрганизацииРаботники
			|ГДЕ
			|	УвольнениеИзОрганизацииРаботники.Сотрудник.Физлицо = &ФизЛицо
			|	И УвольнениеИзОрганизацииРаботники.Ссылка.Проведен 
			|
			|УПОРЯДОЧИТЬ ПО
			|	Дата
			|ИТОГИ ПО
			|	Организация";*/
					//СтруктураДанныхОрганизации.Вставить("ПеремещенияВОрганизации", Запрос.Выполнить());
				}
			}
			if(true/*Подробно*/)
			{
				/*Запрос.Текст = 
		"ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	ХранилищеДополнительнойИнформации.Наименование КАК ОписаниеДанных,
		|	ХранилищеДополнительнойИнформации.Хранилище КАК Данные
		|ИЗ
		|	Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации
		|
		|ГДЕ
		|	((ВЫРАЗИТЬ(ХранилищеДополнительнойИнформации.Объект КАК Справочник.ФизическиеЛица)) = &ФизЛицо) И
		|	ХранилищеДополнительнойИнформации.ВидДанных = &Изображение";*/
				//ВыборкаИзображений = Запрос.Выполнить().Выбрать();
			}
			//ВыводитьНаПечать = Ложь;
			if(true/*ТабДокумент = Неопределено*/)
			{
				//ТабДокумент = Новый ТабличныйДокумент;
				//ВыводитьНаПечать = Истина;
			}
			//ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ФизическиеЛица_ДанныеПоФизлицу";
			//Макет = ПолучитьМакет("ДанныеПоФизлицу");
			if(true/*Подробно*/)
			{
				//ВыборкаОсновноеФото = Результат.Выбрать();
				if(true/*ВыборкаОсновноеФото.Следующий()*/)
				{
					//ДанныеДляФото = ВыборкаОсновноеФото.Данные;
					if(true/*ДанныеДляФото <> Null*/)
					{
						//ФотоНаПропуск = ДанныеДляФото.Получить();
						if(true/*ФотоНаПропуск <> Неопределено*/)
						{
							//ОбластьМакета = Макет.ПолучитьОбласть("ОсновноеФото_Заголовок");
							//ТабДокумент.Вывести(ОбластьМакета);
							//ТабДокумент.Область(ТабДокумент.ВысотаТаблицы,,ТабДокумент.ВысотаТаблицы,).ЦветФона = ЦветаСтиля.ФонГруппировкиВерхнегоУровня;
							//ТабДокумент.НачатьГруппуСтрок("", Не Подробно);
							//ОбластьМакета = Макет.ПолучитьОбласть("ОсновноеФото");
							//ОбластьМакета.Рисунки.ФотоНаПропуск.Картинка = ФотоНаПропуск;
							//ОбластьМакета.Рисунки.ФотоНаПропуск.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии,);
							//ОбластьМакета.Параметры.ОписаниеДанных = ВыборкаОсновноеФото.ОписаниеИзображения;
							//ТабДокумент.Вывести(ОбластьМакета);
							//ТабДокумент.ЗакончитьГруппуСтрок();
						}
					}
				}
			}
			if(true/*Подробно*/)
			{
				if(true/*ВыборкаИзображений.Следующий()*/)
				{
					//ОбластьМакета = Макет.ПолучитьОбласть("Фотогалерея_Заголовок");
					//ТабДокумент.Вывести(ОбластьМакета);
					//ТабДокумент.Область(ТабДокумент.ВысотаТаблицы,,ТабДокумент.ВысотаТаблицы,).ЦветФона = ЦветаСтиля.ФонГруппировкиВерхнегоУровня;
					//ТабДокумент.НачатьГруппуСтрок("", Не Подробно);
					//ОбластьМакета = Макет.ПолучитьОбласть("Фотогалерея");
					//ОбластьМакета.Параметры.ОписаниеДанных = ВыборкаИзображений.ОписаниеДанных;
					//Фото = ВыборкаИзображений.Данные.Получить();
					if(true/*Фото <> Неопределено*/)
					{
						//ОбластьМакета.Рисунки.Фото.Картинка = Фото;
						//ОбластьМакета.Рисунки.Фото.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии,);
					}
					//ТабДокумент.Вывести(ОбластьМакета);
					while(true/*ВыборкаИзображений.Следующий()*/)
					{
						//ОбластьМакета.Параметры.ОписаниеДанных = ВыборкаИзображений.ОписаниеДанных;
						//Фото = ВыборкаИзображений.Данные.Получить();
						//ОбластьМакета.Рисунки.Фото.Картинка = ?(Фото <> Неопределено,Фото,Новый Картинка());
						//ОбластьМакета.Рисунки.Фото.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии,);
						//ТабДокумент.Вывести(ОбластьМакета);
					}
					/*;
			ТабДокумент.ЗакончитьГруппуСтрок();*/
				}
			}
			if(true/*ВыводитьНаПечать*/)
			{
			}
			return null;
		}
		// Печать
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ И ФУНКЦИИ ОБЩЕГО НАЗНАЧЕНИЯ
		//Раскладывает срок в днях на годы, месяцы, дни

		public void РазложитьСрокВДнях(/*СрокВДнях,Лет, Месяцев, Дней*/)
		{
			//ДнейВГоду 		= 12 * 30;
			//Лет 			= Цел(СрокВДнях / ДнейВГоду);
			//ОстатокДней 	= СрокВДнях - Лет * ДнейВГоду;
			//Месяцев			= Цел(ОстатокДней / 30);
			//Дней			= ОстатокДней % 30;
		}
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ формы СЗВ-К
		// По т.ч. Трудовая деятельность
		//
		// Параметры
		//  ЗаписиОСтаже - набор записей для заполнения
		//

		public void ЗаполнитьСЗВКПоТрудовойДеятельности(/*ЗаписиОСтаже*/)
		{
			//Запрос = Новый Запрос;
			//Запрос.УстановитьПараметр("ФизЛицо",Ссылка);
			/*Запрос.Текст =
	"ВЫБРАТЬ
	|	ФизическиеЛицаТрудоваяДеятельность.Организация,
	|	ФизическиеЛицаТрудоваяДеятельность.Должность,
	|	ФизическиеЛицаТрудоваяДеятельность.ДатаНачала КАК НачалоРаботы,
	|	ФизическиеЛицаТрудоваяДеятельность.ДатаОкончания КАК ОкончаниеРаботы,
	|	ФизическиеЛицаТрудоваяДеятельность.НомерСтроки,
	|	ФизическиеЛицаТрудоваяДеятельность.Ссылка
	|ИЗ
	|	Справочник.ФизическиеЛица.ТрудоваяДеятельность КАК ФизическиеЛицаТрудоваяДеятельность
	|ГДЕ
	|	ФизическиеЛицаТрудоваяДеятельность.Ссылка = &ФизЛицо
	|	И ФизическиеЛицаТрудоваяДеятельность.ДатаНачала < ДАТАВРЕМЯ(2002, 1, 1)
	|
	|УПОРЯДОЧИТЬ ПО
	|	НачалоРаботы";*/
			//Выборка = Запрос.Выполнить().Выбрать();
			//Сч = 0;
			while(true/*Выборка.Следующий()*/)
			{
				//НоваяСтрока = ЗаписиОСтаже.Добавить();
				//Сч = Сч + 1;
				//НоваяСтрока.НомерПериодаТрудовойДеятельности = Сч;
				//НоваяСтрока.НомерОсновнойЗаписи		= Сч;
				//НоваяСтрока.ФизЛицо					= Ссылка;
				//НоваяСтрока.Организация				= Выборка.Организация;
				//НоваяСтрока.ВидДеятельности 		= Справочники.ВидыОбщественноПолезнойДеятельности.РАБОТА;
				//НоваяСтрока.Должность 				= Выборка.Должность;
				//НоваяСтрока.ДатаНачалаПериода 	 	= Выборка.НачалоРаботы;
				//НоваяСтрока.ДатаОкончанияПериода 	= Мин(Выборка.ОкончаниеРаботы,'20011231');
			}
			//;;
		}
		// ЗаполнитьСЗВКПоТрудовойДеятельности()
		//Выполняет автоматическое заполнение итоговых данных о стаже

		public void ВыполнитьРасчетИтоговСтажа(/*ЗаписиОСтаже,СуммированныйСтаж*/)
		{
			//ТаблицаЗаписейОСтаже = ЗаписиОСтаже.Выгрузить();
			/*//РАСЧЕТ ОБЩЕГО ТРУДОВОГО СТАЖА С УЧЕТОМ ПЕРЕСЕЧЕНИЯ ПЕРИОДОВ
*/
			/*//Выполним расширение записей с кодом исчисляемого стажа СЕЗОН
*/
			/*//Выполним календарное поглащение в 2 прохода:
*/
			/*// 1 проход - поглащение записями ЛЕПРО всех остальных записей
*/
			/*// 2 проход - поглащение записями СЕЗОН всех оставшихся записей
*/
			/*//Расчет общего стажа по оставшимся записям
*/
			//ОбщийСтажЛет				=	0;
			//ОбщийСтажМесяцев			=	0;
			//ОбщийСтажДней				=	0;
			/*//РАСЧЕТ СТАЖА ТЕРР,ОСОБ,ВЫСЛ
*/
			//ТаблицаЗаписейОСтаже = ЗаписиОСтаже.Выгрузить();
			//ТаблицаТЕРР = Новый ТаблицаЗначений;
			//ТаблицаТЕРР.Колонки.Добавить("КодСтажа");
			//ТаблицаТЕРР.Колонки.Добавить("Лет");
			//ТаблицаТЕРР.Колонки.Добавить("Месяцев");
			//ТаблицаТЕРР.Колонки.Добавить("Дней");
			//ТаблицаОСОБ = ТаблицаТЕРР.Скопировать();
			//ТаблицаВЫСЛ = ТаблицаТЕРР.Скопировать();
			//ТекущаяОсновнаяЗапись = Неопределено;
			/*//Заносим в таблицу итогового стажа данные об общем стаже
*/
			//ПроцедурыПерсонифицированногоУчета.ПолучитьПриведенныйСтаж(ОбщийСтажЛет,ОбщийСтажМесяцев,ОбщийСтажДней);
			if(true/*ОбщийСтажЛет + ОбщийСтажМесяцев + ОбщийСтажДней <> 0*/)
			{
				//СтрокаИтоговоСтажа = СуммированныйСтаж.Добавить();
				//СтрокаИтоговоСтажа.ФизЛицо = Ссылка;
				//СтрокаИтоговоСтажа.НомерЗаписи = 1;
				//СтрокаИтоговоСтажа.ВидСтажа = Перечисления.ВидыТрудовогоСтажа.ОбщийТрудовойСтаж;
				//СтрокаИтоговоСтажа.Лет = ОбщийСтажЛет;
				//СтрокаИтоговоСтажа.Месяцев = ОбщийСтажМесяцев;
				//СтрокаИтоговоСтажа.Дней = ОбщийСтажДней;
			}
			//ТаблицаТЕРР.Свернуть("КодСтажа","Лет,Месяцев,Дней");
			//ТаблицаОСОБ.Свернуть("КодСтажа","Лет,Месяцев,Дней");
			//ТаблицаВЫСЛ.Свернуть("КодСтажа","Лет,Месяцев,Дней");
			/*//Заносим в итоговую таблицу данные о территориальных условиях
*/
			//Сч = 1;
			/*//Заносим в итоговую таблицу данные об особых условиях труда
*/
			/*//Заносим в итоговую таблицу данные о выслуге лет
*/
		}
		///////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ

		public void ПриКопировании(/*ОбъектКопирования*/)
		{
			//ФизическиеЛицаПереопределяемый.ПриКопировании(ЭтотОбъект, ОбъектКопирования);
			if(true/*Не ЭтоГруппа*/)
			{
				//ОсновноеИзображение = Неопределено;
				//ИНН = "";
				//КодИМНС = "";
				//СтраховойНомерПФР = "";
				//МестоРождения = "";
				//МестоРожденияКодПоОКАТО = "";
				//СоставСемьи.Очистить();
				//Образование.Очистить();
				//ТрудоваяДеятельность.Очистить();
				//ЗнаниеЯзыков.Очистить();
				//Профессии.Очистить();
				//Стажи.Очистить();
			}
		}

		public void ПередЗаписью(/*Отказ*/)
		{
			//ФизическиеЛицаПереопределяемый.ПередЗаписью(ЭтотОбъект, Отказ);
			if(true/*ОбменДанными.Загрузка*/)
			{
			}
			//ОбработкаКомментариев = глЗначениеПеременной("глОбработкаСообщений");
			//ОбработкаКомментариев.УдалитьСообщения();
			/*// проверим дубли строк в таблице Стажи
*/
			//СписокДублейСтажа = Новый СписокЗначений;
			//СписокСтажа = Новый СписокЗначений;
			if(true/*СписокДублейСтажа.Количество() <> 0*/)
			{
				//Отказ = Истина;
				//СрокаСообщенияОбОшибке = "В списке ""Стажи общего характера"" обнаружены записи с повторяющимся видом стажа: " + СписокДублейСтажа;
				//ОбработкаКомментариев.ДобавитьСообщение(СрокаСообщенияОбОшибке, Перечисления.ВидыСообщений.Ошибка);
				//ОбработкаКомментариев.ДобавитьСообщение("Элемент не записан!", Перечисления.ВидыСообщений.Ошибка);
				//ОбработкаКомментариев.ПоказатьСообщения();
				//Сообщить(СрокаСообщенияОбОшибке, СтатусСообщения.Важное);
			}
		}
		////////////////////////////////////////////////////////////////////////////////
		// ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ
	}
}